package com.cmc.cloud.cmclink.doc.service.si;

import java.util.Collection;
import java.util.List;

import javax.validation.Valid;

import com.cmc.cloud.cmclink.doc.entity.BlnoLocalCostDO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostdetailvo.BlnoLocalCostDetailAllRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnolocalcostvo.*;

/**
 * 进口提单本地费用 Service 接口
 *
 * @author 招商轮船-管理员
 */
public interface BlnoLocalCostExService {

    /**
     * 获得本地费用提单列表
     *
     * @param reqVO 过滤参数
     * @return 本地费用提单列表
     */
    List<BlnoLocaCoastExRespVO> getBlnoWithLocalCostList(BlnoLocalCostExReqVO reqVO);


    /**
     * 删除local cost import
     *
     * @param blnoIds blnoIds
     */
    void deleteExDetailByBlnoIdList(Collection<Long> blnoIds);

    /**
     * 查询进口localCost详情
     *
     * @param id 主键id
     * @return 详情
     */
    BlnoLocalCostDetailAllRespVO getBlnoAllLocalCost(Long id);

    /**
     * 查询localCost列表
     *
     * @param blnoId 提单id
     * @param exImType 进出口类型
     * @return localCost列表
     */
    List<BlnoLocalCostDO> getLocalCostByBlnoId(Long blnoId, String exImType);

    /**
     * 创建
     *
     * @param createReqVO 请求VO
     */
    void createBlnoLocalCost(BlnoLocalCostExCreateReqVO createReqVO);

    /**
     * 更新
     *
     * @param updateReqVO updateReqVO
     */
    void updateBlnoLocalCost(@Valid BlnoLocalCostExUpdateReqVO updateReqVO);

    /**
     * 删除
     *
     * @param id 主键
     */
    void deleteBlnoLocalCost(Long id);

    /**
     * 获得提单本地费用
     *
     * @param blnoId 编号
     * @return 获得提单本地费用
     */
    List<BlnoLocalCostUpdateReqVO> getBlnoCostByBlnoId(Long blnoId);

}
